Field
This disclosure relates to cloud computing data center architecture and more particularly to reconfigurable compute nodes within a data center.
Description of Related Art
Cloud computing is an information processing architecture in which internal or external users access shared pools of reconfigurable computing resources such as servers, storage, applications, and services. With cloud computing, users run applications (which may be provided by the cloud provider or the user) on computing resources in the “cloud”, which is to say on a remote server within a data center. The location and internal structure of the data center are unimportant, and typically unknown, to the user. Users benefit from access to scalable computing resources without having to make the investment in equipment and staff required to provide comparable in-house capabilities.
Cloud computing data centers include replicated computers that run applications for users. These computers will be referred to herein as “compute nodes,” but may also be called “servers”, “blades”, “boards”, or some other name. Currently, each compute node is a self-contained board or other physical module. Typically, multiple compute nodes are housed in a common equipment rack and connected to the world external to the rack though a high-speed network switch.
FIG. 1 is a simplified block diagram of an exemplary compute node 100. The compute node 100 is not necessarily representative of the compute nodes in any particular data center, but is illustrative of problems with the current data center architecture.
The exemplary compute node 100 includes two central processing units (CPUs) 110, 111 and eight graphics processing units (GPUs) 130 to 137. The compute node 100 may contain memory and other functional elements not shown in FIG. 1. The CPUs 110, 111 are communicatively coupled to each other, and the CPUs 110, 111 are coupled to respective interfaces 150, 151 to the external world. These interfaces may be or include, for example, high speed Ethernet interfaces for communications using the TCP/IP (transmission control protocol/internet protocol) protocol suite.
The GPUs 130-137 are organized as two banks of four GPUs respectively associated with the two processors 110, 111. Data transfers between the CPUs and GPUs are made over PCIE (peripheral computer interface express) buses. Since each CPU 110, 111 has limited PCIE bus capacity, respective PCIE switches 120, 121 are used between each CPU 110, 111 and the respective bank of GPUs. Although the PCIE bus provides high data transfer rates, significant latency may be incurred when data is transferred through one or both of the PCIE switches 120, 121.
A first problem with current data center architecture is inflexible compute node configuration. The compute node 100 is ideally suited to run applications that were designed for execution by two CPUs and eight GPUs. However, the fixed configuration (i.e. two CPUs and eight GPUs) of the compute node 100 makes it less suitable for other applications. For example, applications designed for more than eight GPUs would run slowly and inefficiently on the compute node 100. Applications designed for less than eight GPUs will run efficiently on the compute node 100, but are an inefficient use of the compute node's resources. The compute node 100 may have the capacity to run multiple applications concurrently, which may make more efficient use of the available resources. However, users commonly request applications to be run on dedicated (i.e. not concurrently shared with other users) compute nodes.
A second problem with current data center architecture is the aggregation of the functional elements of compute nodes into physical modules such that the development cycle of individual functional elements is tied together. This aggregation typically precludes upgrading one functional element of a compute node without replacing the entire module. Further, failure of any of the core elements (CPU, GPU, etc.) of an aggregate compute node requires replacement of the entire compute node.
An alternative to typical data center architecture is to have the core components (CPUs, GPUs and other application accelerators, storage, memory, etc.) of compute nodes disaggregated, or physically separated, and interconnected by a switching fabric. Disaggregation allows compute nodes of any desired configuration to be created by coupling the appropriate resources through the switching fabric. Further, disaggregation allows upgrading or replacing one type of core component without impacting other components. A high throughput, low latency switching fabric is a critical enabling technology for disaggregated data centers.